package pms.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import pms.dao.JahrDao;
import pms.dao.MitarbeiterDao;
import pms.dao.UrlaubsanspruchDao;
import pms.dao.MitarbeiterAbwesendDao;

/**
 * <p>
 * Ein Controller, mit dem man den Urlaub dem Mitarbeiter zuordnen kann
 * </p>
 * <p>
 * ModelAndView Infos
 * <p>
 * <ul>
 * <li>title: Ueberschrift dieser View</li>
 * <li>message: Hinweise fuer den Benutzer</li>
 * <li>mitarbeiter: ausgewaehlter Mitarbeiter</li>
 * <li>mitarbeiterurlaubset: Urlaubsanspruch des Mitarbeiters</li>
 * </ul>
 * Der Name der ausgebenden View ist: 'waehlemitarbeiterurlaub.jsp'
 * </p>
 * @see MitarbeiterDao
 * @see JahrDao
 * @see UrlaubsanspruchDao
 * @see MitarbeiterAbwesendDao
 */ 

public class WaehleUrlaubfuerMitarbeiter extends AbstractController {
	
	private MitarbeiterDao mitarbeiterDao;
	private UrlaubsanspruchDao urlaubsanspruchDao;
	private JahrDao jahrDao;
	private MitarbeiterAbwesendDao mitarbeiterAbwesendDao;
		
	public void setMitarbeiterDao(MitarbeiterDao mitarbeiterDao) {
		this.mitarbeiterDao = mitarbeiterDao;
	}
	
	public MitarbeiterDao getMitarbeiterDao() {
		return mitarbeiterDao;
	}
	
	public UrlaubsanspruchDao getUrlaubsanspruchDao() {
		return urlaubsanspruchDao;
	}

	public void setUrlaubsanspruchDao(UrlaubsanspruchDao urlaubsanspruchDao) {
		this.urlaubsanspruchDao = urlaubsanspruchDao;
	}

	public JahrDao getJahrDao() {
		return jahrDao;
	}

	public void setJahrDao(JahrDao jahrDao) {
		this.jahrDao = jahrDao;
	}

	public MitarbeiterAbwesendDao getMitarbeiterAbwesendDao() {
		return mitarbeiterAbwesendDao;
	}

	public void setMitarbeiterAbwesendDao(
			MitarbeiterAbwesendDao mitarbeiterAbwesendDao) {
		this.mitarbeiterAbwesendDao = mitarbeiterAbwesendDao;
	}

	protected ModelAndView handleRequestInternal(
		HttpServletRequest httpServletRequest,
		HttpServletResponse httpServletResponse) throws Exception 
		{
		ModelAndView mv = new ModelAndView();
		int idm = Integer.parseInt(httpServletRequest.getParameter("idm"));
		if (jahrDao.findAll().isEmpty() || mitarbeiterDao.findAll().isEmpty()) {
			mv.addObject("title", "Waehle Mitarbeiter Jahresurlaub zuordnen");
			mv.setViewName("Fehler");
			if (jahrDao.findAll().isEmpty()) {
				mv.addObject("message", "Es müssen zuerst Jahre definiert werden!" +
						" Bitte Eingaben über Admin...");
			} else {
				mv.addObject("message", "Es müssen zuerst Mitarbeiter definiert werden!" +
						" Bitte Eingaben über Admin...");
			}
		} else {
			mv.addObject("title", "Jahresurlaub zuordnen");
			mv.addObject("message", "Hier können Sie dem gewählten Mitarbeiter den Jahresurlaub sprich Anzahl Tage für ein bestimmtes Jahr zuordnen");
			mv.addObject("mitarbeiter", mitarbeiterDao.findById(idm));
			mv.addObject("mitarbeiterurlaubset", mitarbeiterDao.getUrlaubsanspruecheMitarbeiterbyId(idm));
			mv.addObject("restjahre", jahrDao.findeRestJahre(mitarbeiterDao.getUrlaubsanspruecheMitarbeiterbyId(idm)));
			mv.setViewName("waehlemitarbeiterurlaub");
		}
		return mv;
	}

}